<?php
/**
* @package MIME Types Class
* @version 1.0
* @author  Robert Widdick
* @copyright Copyright (c) 2009 Robert Widdick - codehelpers.com
* @license GNU GPL
* @desc    Gather all known mime types (may be missing several and have duplicates in which you can remove yourself)
* @param   None
* @returns Nothing
* @example See example.php
*
* If you use this, all I ask is that you let me know! I'd like to see who all uses this!
* Also, credits would be much appreciated or a link back to codehelpers.com! Thanks :)
*
* Please note, in $types there are duplicate entries -- it's up to you to determine what type of file is what for duplicates.
* I would have done this, but in some cases, I could have been incorrect. If duplicates aren't removed, the first occurances will take precedence, even when displaying the list.
* Reason being, if the key has been set already, it will not "overwrite" that key, even if its in the same array.
*
* Oh, and, if you happen to add onto this list, please email me robert@codehelpers.com and I'll add it to the package @ phpclasses!
*
* Thanks, Robert
*/
$GLOBALS['mimetypes'] = array(
  '3dm'    => 'x-world/x-3dmf',
  '3dmf'   => 'x-world/x-3dmf',
  'a'      => 'application/octet-stream',
  'aab'    => 'application/x-authorware-bin',
  'aam'    => 'application/x-authorware-map',
  'aas'    => 'application/x-authorware-seg',
  'abc'    => 'text/vnd.abc',
  'acgi'   => 'text/html',
  'afl'    => 'video/animaflex',
  'ai'     => 'application/postscript',
  'aif'    => 'audio/aiff',
  'aif'    => 'audio/x-aiff',
  'aifc'   => 'audio/aiff',
  'aifc'   => 'audio/x-aiff',
  'aiff'   => 'audio/aiff',
  'aiff'   => 'audio/x-aiff',
  'aim'    => 'application/x-aim',
  'aip'    => 'text/x-audiosoft-intra',
  'ani'    => 'application/x-navi-animation',
  'aos'    => 'application/x-nokia-9000-communicator-add-on-software',
  'aps'    => 'application/mime',
  'arc'    => 'application/octet-stream',
  'arj'    => 'application/arj',
  'arj'    => 'application/octet-stream',
  'art'    => 'image/x-jg',
  'asf'    => 'video/x-ms-asf',
  'asm'    => 'text/x-asm',
  'asp'    => 'text/asp',
  'asx'    => 'application/x-mplayer2',
  'asx'    => 'video/x-ms-asf',
  'asx'    => 'video/x-ms-asf-plugin',
  'au'     => 'audio/basic',
  'au'     => 'audio/x-au',
  'avi'    => 'application/x-troff-msvideo',
  'avi'    => 'video/avi',
  'avi'    => 'video/msvideo',
  'avi'    => 'video/x-msvideo',
  'avs'    => 'video/avs-video',
  'bcpio'  => 'application/x-bcpio',
  'bin'    => 'application/mac-binary',
  'bin'    => 'application/macbinary',
  'bin'    => 'application/octet-stream',
  'bin'    => 'application/x-binary',
  'bin'    => 'application/x-macbinary',
  'bm'     => 'image/bmp',
  'bmp'    => 'image/bmp',
  'bmp'    => 'image/x-windows-bmp',
  'boo'    => 'application/book',
  'book'   => 'application/book',
  'boz'    => 'application/x-bzip2',
  'bsh'    => 'application/x-bsh',
  'bz'     => 'application/x-bzip',
  'bz2'    => 'application/x-bzip2',
  'c'      => 'text/plain',
  'c'      => 'text/x-c',
  'c++'    => 'text/plain',
  'cat'    => 'application/vnd.ms-pki.seccat',
  'cc'     => 'text/plain',
  'cc'     => 'text/x-c',
  'ccad'   => 'application/clariscad',
  'cco'    => 'application/x-cocoa',
  'cdf'    => 'application/cdf',
  'cdf'    => 'application/x-cdf',
  'cdf'    => 'application/x-netcdf',
  'cer'    => 'application/pkix-cert',
  'cer'    => 'application/x-x509-ca-cert',
  'cha'    => 'application/x-chat',
  'chat'   => 'application/x-chat',
  'class'  => 'application/java',
  'class'  => 'application/java-byte-code',
  'class'  => 'application/x-java-class',
  'com'    => 'application/octet-stream',
  'com'    => 'text/plain',
  'conf'   => 'text/plain',
  'cpio'   => 'application/x-cpio',
  'cpp'    => 'text/x-c',
  'cpt'    => 'application/mac-compactpro',
  'cpt'    => 'application/x-compactpro',
  'cpt'    => 'application/x-cpt',
  'crl'    => 'application/pkcs-crl',
  'crl'    => 'application/pkix-crl',
  'crt'    => 'application/pkix-cert',
  'crt'    => 'application/x-x509-ca-cert',
  'crt'    => 'application/x-x509-user-cert',
  'csh'    => 'application/x-csh',
  'csh'    => 'text/x-script.csh',
  'css'    => 'application/x-pointplus',
  'css'    => 'text/css',
  'cxx'    => 'text/plain',
  'dcr'    => 'application/x-director',
  'deepv'  => 'application/x-deepv',
  'def'    => 'text/plain',
  'der'    => 'application/x-x509-ca-cert',
  'dif'    => 'video/x-dv',
  'dir'    => 'application/x-director',
  'dl'     => 'video/dl',
  'dl'     => 'video/x-dl',
  'doc'    => 'application/msword',
  'dot'    => 'application/msword',
  'dp'     => 'application/commonground',
  'drw'    => 'application/drafting',
  'dump'   => 'application/octet-stream',
  'dv'     => 'video/x-dv',
  'dvi'    => 'application/x-dvi',
  'dwf'    => 'model/vnd.dwf',
  'dwg'    => 'application/acad',
  'dwg'    => 'image/vnd.dwg',
  'dwg'    => 'image/x-dwg',
  'dxf'    => 'application/dxf',
  'dxf'    => 'image/vnd.dwg',
  'dxf'    => 'image/x-dwg',
  'dxr'    => 'application/x-director',
  'el'     => 'text/x-script.elisp',
  'elc'    => 'application/x-bytecode.elisp',
  'elc'    => 'application/x-elc',
  'env'    => 'application/x-envoy',
  'eps'    => 'application/postscript',
  'es'     => 'application/x-esrehber',
  'etx'    => 'text/x-setext',
  'evy'    => 'application/envoy',
  'evy'    => 'application/x-envoy',
  'exe'    => 'application/octet-stream',
  'f'      => 'text/plain',
  'f'      => 'text/x-fortran',
  'f77'    => 'text/x-fortran',
  'f90'    => 'text/plain',
  'f90'    => 'text/x-fortran',
  'fdf'    => 'application/vnd.fdf',
  'fif'    => 'application/fractals',
  'fif'    => 'image/fif',
  'fli'    => 'video/fli',
  'fli'    => 'video/x-fli',
  'flo'    => 'image/florian',
  'flx'    => 'text/vnd.fmi.flexstor',
  'fmf'    => 'video/x-atomic3d-feature',
  'for'    => 'text/plain',
  'for'    => 'text/x-fortran',
  'fpx'    => 'image/vnd.fpx',
  'fpx'    => 'image/vnd.net-fpx',
  'frl'    => 'application/freeloader',
  'funk'   => 'audio/make',
  'g'      => 'text/plain',
  'g3'     => 'image/g3fax',
  'gif'    => 'image/gif',
  'gl'     => 'video/gl',
  'gl'     => 'video/x-gl',
  'gsd'    => 'audio/x-gsm',
  'gsm'    => 'audio/x-gsm',
  'gsp'    => 'application/x-gsp',
  'gss'    => 'application/x-gss',
  'gtar'   => 'application/x-gtar',
  'gz'     => 'application/x-compressed',
  'gz'     => 'application/x-gzip',
  'gzip'   => 'application/x-gzip',
  'gzip'   => 'multipart/x-gzip',
  'h'      => 'text/plain',
  'h'      => 'text/x-h',
  'hdf'    => 'application/x-hdf',
  'help'   => 'application/x-helpfile',
  'hgl'    => 'application/vnd.hp-hpgl',
  'hh'     => 'text/plain',
  'hh'     => 'text/x-h',
  'hlb'    => 'text/x-script',
  'hlp'    => 'application/hlp',
  'hlp'    => 'application/x-helpfile',
  'hlp'    => 'application/x-winhelp',
  'hpg'    => 'application/vnd.hp-hpgl',
  'hpgl'   => 'application/vnd.hp-hpgl',
  'hqx'    => 'application/binhex',
  'hqx'    => 'application/binhex4',
  'hqx'    => 'application/mac-binhex',
  'hqx'    => 'application/mac-binhex40',
  'hqx'    => 'application/x-binhex40',
  'hqx'    => 'application/x-mac-binhex40',
  'hta'    => 'application/hta',
  'htc'    => 'text/x-component',
  'htm'    => 'text/html',
  'html'   => 'text/html',
  'htmls'  => 'text/html',
  'htt'    => 'text/webviewhtml',
  'htx'    => 'text/html',
  'ice'    => 'x-conference/x-cooltalk',
  'ico'    => 'image/x-icon',
  'idc'    => 'text/plain',
  'ief'    => 'image/ief',
  'iefs'   => 'image/ief',
  'iges'   => 'application/iges',
  'iges'   => 'model/iges',
  'igs'    => 'application/iges',
  'igs'    => 'model/iges',
  'ima'    => 'application/x-ima',
  'imap'   => 'application/x-httpd-imap',
  'inf'    => 'application/inf',
  'ins'    => 'application/x-internett-signup',
  'ip'     => 'application/x-ip2',
  'isu'    => 'video/x-isvideo',
  'it'     => 'audio/it',
  'iv'     => 'application/x-inventor',
  'ivr'    => 'i-world/i-vrml',
  'ivy'    => 'application/x-livescreen',
  'jam'    => 'audio/x-jam',
  'jav'    => 'text/plain',
  'jav'    => 'text/x-java-source',
  'java'   => 'text/plain',
  'java'   => 'text/x-java-source',
  'jcm'    => 'application/x-java-commerce',
  'jfif'   => 'image/jpeg',
  'jfif'   => 'image/pjpeg',
  'jfif-tbnl' => 'image/jpeg',
  'jpe'    => 'image/jpeg',
  'jpeg'   => 'image/jpeg',
  'jpg'    => 'image/jpeg',
  'jps'    => 'image/x-jps',
  'js'     => 'application/x-javascript',
  'jut'    => 'image/jutvision',
  'kar'    => 'audio/midi',
  'kar'    => 'music/x-karaoke',
  'ksh'    => 'application/x-ksh',
  'ksh'    => 'text/x-script.ksh',
  'la'     => 'audio/nspaudio',
  'la'     => 'audio/x-nspaudio',
  'lam'    => 'audio/x-liveaudio',
  'latex'  => 'application/x-latex',
  'lha'    => 'application/lha',
  'lha'    => 'application/octet-stream',
  'lha'    => 'application/x-lha',
  'lhx'    => 'application/octet-stream',
  'list'   => 'text/plain',
  'lma'    => 'audio/nspaudio',
  'lma'    => 'audio/x-nspaudio',
  'log'    => 'text/plain',
  'lsp'    => 'application/x-lisp',
  'lsp'    => 'text/x-script.lisp',
  'lst'    => 'text/plain',
  'lsx'    => 'text/x-la-asf',
  'ltx'    => 'application/x-latex',
  'lzh'    => 'application/octet-stream',
  'lzh'    => 'application/x-lzh',
  'lzx'    => 'application/lzx',
  'lzx'    => 'application/octet-stream',
  'lzx'    => 'application/x-lzx',
  'm'      => 'text/plain',
  'm'      => 'text/x-m',
  'm1v'    => 'video/mpeg',
  'm2a'    => 'audio/mpeg',
  'm2v'    => 'video/mpeg',
  'm3u'    => 'audio/x-mpequrl',
  'man'    => 'application/x-troff-man',
  'map'    => 'application/x-navimap',
  'mar'    => 'text/plain',
  'mbd'    => 'application/mbedlet',
  'mc$'    => 'application/x-magic-cap-package-1.0',
  'mcd'    => 'application/mcad',
  'mcd'    => 'application/x-mathcad',
  'mcf'    => 'image/vasa',
  'mcf'    => 'text/mcf',
  'mcp'    => 'application/netmc',
  'me'     => 'application/x-troff-me',
  'mht'    => 'message/rfc822',
  'mhtml'  => 'message/rfc822',
  'mid'    => 'application/x-midi',
  'mid'    => 'audio/midi',
  'mid'    => 'audio/x-mid',
  'mid'    => 'audio/x-midi',
  'mid'    => 'music/crescendo',
  'mid'    => 'x-music/x-midi',
  'midi'   => 'application/x-midi',
  'midi'   => 'audio/midi',
  'midi'   => 'audio/x-mid',
  'midi'   => 'audio/x-midi',
  'midi'   => 'music/crescendo',
  'midi'   => 'x-music/x-midi',
  'mif'    => 'application/x-frame',
  'mif'    => 'application/x-mif',
  'mime'   => 'message/rfc822',
  'mime'   => 'www/mime',
  'mjf'    => 'audio/x-vnd.audioexplosion.mjuicemediafile',
  'mjpg'   => 'video/x-motion-jpeg',
  'mm'     => 'application/base64',
  'mm'     => 'application/x-meme',
  'mme'    => 'application/base64',
  'mod'    => 'audio/mod',
  'mod'    => 'audio/x-mod',
  'moov'   => 'video/quicktime',
  'mov'    => 'video/quicktime',
  'movie'  => 'video/x-sgi-movie',
  'mp2'    => 'audio/mpeg',
  'mp2'    => 'audio/x-mpeg',
  'mp2'    => 'video/mpeg',
  'mp2'    => 'video/x-mpeg',
  'mp2'    => 'video/x-mpeq2a',
  'mp3'    => 'audio/mpeg3',
  'mp3'    => 'audio/x-mpeg-3',
  'mp3'    => 'video/mpeg',
  'mp3'    => 'video/x-mpeg',
  'mpa'    => 'audio/mpeg',
  'mpa'    => 'video/mpeg',
  'mpc'    => 'application/x-project',
  'mpe'    => 'video/mpeg',
  'mpeg'   => 'video/mpeg',
  'mpg'    => 'audio/mpeg',
  'mpg'    => 'video/mpeg',
  'mpga'   => 'audio/mpeg',
  'mpp'    => 'application/vnd.ms-project',
  'mpt'    => 'application/x-project',
  'mpv'    => 'application/x-project',
  'mpx'    => 'application/x-project',
  'mrc'    => 'application/marc',
  'ms'     => 'application/x-troff-ms',
  'mv'     => 'video/x-sgi-movie',
  'my'     => 'audio/make',
  'mzz'    => 'application/x-vnd.audioexplosion.mzz',
  'nap'    => 'image/naplps',
  'naplps' => 'image/naplps',
  'nc'     => 'application/x-netcdf',
  'ncm'    => 'application/vnd.nokia.configuration-message',
  'nif'    => 'image/x-niff',
  'niff'   => 'image/x-niff',
  'nix'    => 'application/x-mix-transfer',
  'nsc'    => 'application/x-conference',
  'nvd'    => 'application/x-navidoc',
  'o'      => 'application/octet-stream',
  'oda'    => 'application/oda',
  'omc'    => 'application/x-omc',
  'omcd'   => 'application/x-omcdatamaker',
  'omcr'   => 'application/x-omcregerator',
  'p'      => 'text/x-pascal',
  'p10'    => 'application/pkcs10',
  'p10'    => 'application/x-pkcs10',
  'p12'    => 'application/pkcs-12',
  'p12'    => 'application/x-pkcs12',
  'p7a'    => 'application/x-pkcs7-signature',
  'p7c'    => 'application/pkcs7-mime',
  'p7c'    => 'application/x-pkcs7-mime',
  'p7m'    => 'application/pkcs7-mime',
  'p7m'    => 'application/x-pkcs7-mime',
  'p7r'    => 'application/x-pkcs7-certreqresp',
  'p7s'    => 'application/pkcs7-signature',
  'part'   => 'application/pro_eng',
  'pas'    => 'text/pascal',
  'pbm'    => 'image/x-portable-bitmap',
  'pcl'    => 'application/vnd.hp-pcl',
  'pcl'    => 'application/x-pcl',
  'pct'    => 'image/x-pict',
  'pcx'    => 'image/x-pcx',
  'pdb'    => 'chemical/x-pdb',
  'pdf'    => 'application/pdf',
  'pfunk'  => 'audio/make',
  'pfunk'  => 'audio/make.my.funk',
  'pgm'    => 'image/x-portable-graymap',
  'pgm'    => 'image/x-portable-greymap',
  'pic'    => 'image/pict',
  'pict'   => 'image/pict',
  'pkg'    => 'application/x-newton-compatible-pkg',
  'pko'    => 'application/vnd.ms-pki.pko',
  'pl'     => 'text/plain',
  'pl'     => 'text/x-script.perl',
  'plx'    => 'application/x-pixclscript',
  'pm'     => 'image/x-xpixmap',
  'pm'     => 'text/x-script.perl-module',
  'pm4'    => 'application/x-pagemaker',
  'pm5'    => 'application/x-pagemaker',
  'png'    => 'image/png',
  'pnm'    => 'application/x-portable-anymap',
  'pnm'    => 'image/x-portable-anymap',
  'pot'    => 'application/mspowerpoint',
  'pot'    => 'application/vnd.ms-powerpoint',
  'pov'    => 'model/x-pov',
  'ppa'    => 'application/vnd.ms-powerpoint',
  'ppm'    => 'image/x-portable-pixmap',
  'pps'    => 'application/mspowerpoint',
  'pps'    => 'application/vnd.ms-powerpoint',
  'ppt'    => 'application/mspowerpoint',
  'ppt'    => 'application/powerpoint',
  'ppt'    => 'application/vnd.ms-powerpoint',
  'ppt'    => 'application/x-mspowerpoint',
  'ppz'    => 'application/mspowerpoint',
  'pre'    => 'application/x-freelance',
  'prt'    => 'application/pro_eng',
  'ps'     => 'application/postscript',
  'psd'    => 'application/octet-stream',
  'pvu'    => 'paleovu/x-pv',
  'pwz'    => 'application/vnd.ms-powerpoint',
  'py'     => 'text/x-script.phyton',
  'pyc'    => 'applicaiton/x-bytecode.python',
  'qcp'    => 'audio/vnd.qcelp',
  'qd3'    => 'x-world/x-3dmf',
  'qd3d'   => 'x-world/x-3dmf',
  'qif'    => 'image/x-quicktime',
  'qt'     => 'video/quicktime',
  'qtc'    => 'video/x-qtc',
  'qti'    => 'image/x-quicktime',
  'qtif'   => 'image/x-quicktime',
  'ra'     => 'audio/x-pn-realaudio',
  'ra'     => 'audio/x-pn-realaudio-plugin',
  'ra'     => 'audio/x-realaudio',
  'ram'    => 'audio/x-pn-realaudio',
  'ras'    => 'application/x-cmu-raster',
  'ras'    => 'image/cmu-raster',
  'ras'    => 'image/x-cmu-raster',
  'rast'   => 'image/cmu-raster',
  'rexx'   => 'text/x-script.rexx',
  'rf'     => 'image/vnd.rn-realflash',
  'rgb'    => 'image/x-rgb',
  'rm'     => 'application/vnd.rn-realmedia',
  'rm'     => 'audio/x-pn-realaudio',
  'rmi'    => 'audio/mid',
  'rmm'    => 'audio/x-pn-realaudio',
  'rmp'    => 'audio/x-pn-realaudio',
  'rmp'    => 'audio/x-pn-realaudio-plugin',
  'rng'    => 'application/ringing-tones',
  'rng'    => 'application/vnd.nokia.ringing-tone',
  'rnx'    => 'application/vnd.rn-realplayer',
  'roff'   => 'application/x-troff',
  'rp'     => 'image/vnd.rn-realpix',
  'rpm'    => 'audio/x-pn-realaudio-plugin',
  'rt'     => 'text/richtext',
  'rt'     => 'text/vnd.rn-realtext',
  'rtf'    => 'application/rtf',
  'rtf'    => 'application/x-rtf',
  'rtf'    => 'text/richtext',
  'rtx'    => 'application/rtf',
  'rtx'    => 'text/richtext',
  'rv'     => 'video/vnd.rn-realvideo',
  's'      => 'text/x-asm',
  's3m'    => 'audio/s3m',
  'saveme' => 'application/octet-stream',
  'sbk'    => 'application/x-tbook',
  'scm'    => 'application/x-lotusscreencam',
  'scm'    => 'text/x-script.guile',
  'scm'    => 'text/x-script.scheme',
  'scm'    => 'video/x-scm',
  'sdml'   => 'text/plain',
  'sdp'    => 'application/sdp',
  'sdp'    => 'application/x-sdp',
  'sdr'    => 'application/sounder',
  'sea'    => 'application/sea',
  'sea'    => 'application/x-sea',
  'set'    => 'application/set',
  'sgm'    => 'text/sgml',
  'sgm'    => 'text/x-sgml',
  'sgml'   => 'text/sgml',
  'sgml'   => 'text/x-sgml',
  'sh'     => 'application/x-bsh',
  'sh'     => 'application/x-sh',
  'sh'     => 'application/x-shar',
  'sh'     => 'text/x-script.sh',
  'shar'   => 'application/x-bsh',
  'shar'   => 'application/x-shar',
  'shtml'  => 'text/html',
  'shtml'  => 'text/x-server-parsed-html',
  'sid'    => 'audio/x-psid',
  'sit'    => 'application/x-sit',
  'sit'    => 'application/x-stuffit',
  'skd'    => 'application/x-koan',
  'skm'    => 'application/x-koan',
  'skp'    => 'application/x-koan',
  'skt'    => 'application/x-koan',
  'sl'     => 'application/x-seelogo',
  'smi'    => 'application/smil',
  'smil'   => 'application/smil',
  'snd'    => 'audio/basic',
  'snd'    => 'audio/x-adpcm',
  'sol'    => 'application/solids',
  'spc'    => 'application/x-pkcs7-certificates',
  'spc'    => 'text/x-speech',
  'spl'    => 'application/futuresplash',
  'spr'    => 'application/x-sprite',
  'sprite' => 'application/x-sprite',
  'src'    => 'application/x-wais-source',
  'ssi'    => 'text/x-server-parsed-html',
  'ssm'    => 'application/streamingmedia',
  'sst'    => 'application/vnd.ms-pki.certstore',
  'step'   => 'application/step',
  'stl'    => 'application/sla',
  'stl'    => 'application/vnd.ms-pki.stl',
  'stl'    => 'application/x-navistyle',
  'stp'    => 'application/step',
  'sv4cpio'=> 'application/x-sv4cpio',
  'sv4crc' => 'application/x-sv4crc',
  'svf'    => 'image/vnd.dwg',
  'svf'    => 'image/x-dwg',
  'svr'    => 'application/x-world',
  'svr'    => 'x-world/x-svr',
  'swf'    => 'application/x-shockwave-flash',
  't'      => 'application/x-troff',
  'talk'   => 'text/x-speech',
  'tar'    => 'application/x-tar',
  'tbk'    => 'application/toolbook',
  'tbk'    => 'application/x-tbook',
  'tcl'    => 'application/x-tcl',
  'tcl'    => 'text/x-script.tcl',
  'tcsh'   => 'text/x-script.tcsh',
  'tex'    => 'application/x-tex',
  'texi'   => 'application/x-texinfo',
  'texinfo'=> 'application/x-texinfo',
  'text'   => 'application/plain',
  'text'   => 'text/plain',
  'tgz'    => 'application/gnutar',
  'tgz'    => 'application/x-compressed',
  'tif'    => 'image/tiff',
  'tif'    => 'image/x-tiff',
  'tiff'   => 'image/tiff',
  'tiff'   => 'image/x-tiff',
  'tr'     => 'application/x-troff',
  'tsi'    => 'audio/tsp-audio',
  'tsp'    => 'application/dsptype',
  'tsp'    => 'audio/tsplayer',
  'tsv'    => 'text/tab-separated-values',
  'turbot' => 'image/florian',
  'txt'    => 'text/plain',
  'uil'    => 'text/x-uil',
  'uni'    => 'text/uri-list',
  'unis'   => 'text/uri-list',
  'unv'    => 'application/i-deas',
  'uri'    => 'text/uri-list',
  'uris'   => 'text/uri-list',
  'ustar'  => 'application/x-ustar',
  'ustar'  => 'multipart/x-ustar',
  'uu'     => 'application/octet-stream',
  'uu'     => 'text/x-uuencode',
  'uue'    => 'text/x-uuencode',
  'vcd'    => 'application/x-cdlink',
  'vcs'    => 'text/x-vcalendar',
  'vda'    => 'application/vda',
  'vdo'    => 'video/vdo',
  'vew'    => 'application/groupwise',
  'viv'    => 'video/vivo',
  'viv'    => 'video/vnd.vivo',
  'vivo'   => 'video/vivo',
  'vivo'   => 'video/vnd.vivo',
  'vmd'    => 'application/vocaltec-media-desc',
  'vmf'    => 'application/vocaltec-media-file',
  'voc'    => 'audio/voc',
  'voc'    => 'audio/x-voc',
  'vos'    => 'video/vosaic',
  'vox'    => 'audio/voxware',
  'vqe'    => 'audio/x-twinvq-plugin',
  'vqf'    => 'audio/x-twinvq',
  'vql'    => 'audio/x-twinvq-plugin',
  'vrml'   => 'application/x-vrml',
  'vrml'   => 'model/vrml',
  'vrml'   => 'x-world/x-vrml',
  'vrt'    => 'x-world/x-vrt',
  'vsd'    => 'application/x-visio',
  'vst'    => 'application/x-visio',
  'vsw'    => 'application/x-visio',
  'w60'    => 'application/wordperfect6.0',
  'w61'    => 'application/wordperfect6.1',
  'w6w'    => 'application/msword',
  'wav'    => 'audio/wav',
  'wav'    => 'audio/x-wav',
  'wb1'    => 'application/x-qpro',
  'wbmp'   => 'image/vnd.wap.wbmp',
  'web'    => 'application/vnd.xara',
  'wiz'    => 'application/msword',
  'wk1'    => 'application/x-123',
  'wmf'    => 'windows/metafile',
  'wml'    => 'text/vnd.wap.wml',
  'wmlc'   => 'application/vnd.wap.wmlc',
  'wmls'   => 'text/vnd.wap.wmlscript',
  'wmlsc'  => 'application/vnd.wap.wmlscriptc',
  'word'   => 'application/msword',
  'wp'     => 'application/wordperfect',
  'wp5'    => 'application/wordperfect',
  'wp5'    => 'application/wordperfect6.0',
  'wp6'    => 'application/wordperfect',
  'wpd'    => 'application/wordperfect',
  'wpd'    => 'application/x-wpwin',
  'wq1'    => 'application/x-lotus',
  'wri'    => 'application/mswrite',
  'wri'    => 'application/x-wri',
  'wrl'    => 'application/x-world',
  'wrl'    => 'model/vrml',
  'wrl'    => 'x-world/x-vrml',
  'wrz'    => 'model/vrml',
  'wrz'    => 'x-world/x-vrml',
  'wsc'    => 'text/scriplet',
  'wsrc'   => 'application/x-wais-source',
  'wtk'    => 'application/x-wintalk',
  'xbm'    => 'image/x-xbitmap',
  'xbm'    => 'image/x-xbm',
  'xbm'    => 'image/xbm',
  'xdr'    => 'video/x-amt-demorun',
  'xgz'    => 'xgl/drawing',
  'xif'    => 'image/vnd.xiff',
  'xl'     => 'application/excel',
  'xla'    => 'application/excel',
  'xla'    => 'application/x-excel',
  'xla'    => 'application/x-msexcel',
  'xlb'    => 'application/excel',
  'xlb'    => 'application/vnd.ms-excel',
  'xlb'    => 'application/x-excel',
  'xlc'    => 'application/excel',
  'xlc'    => 'application/vnd.ms-excel',
  'xlc'    => 'application/x-excel',
  'xld'    => 'application/excel',
  'xld'    => 'application/x-excel',
  'xlk'    => 'application/excel',
  'xlk'    => 'application/x-excel',
  'xll'    => 'application/excel',
  'xll'    => 'application/vnd.ms-excel',
  'xll'    => 'application/x-excel',
  'xlm'    => 'application/excel',
  'xlm'    => 'application/vnd.ms-excel',
  'xlm'    => 'application/x-excel',
  'xls'    => 'application/excel',
  'xls'    => 'application/vnd.ms-excel',
  'xls'    => 'application/x-excel',
  'xls'    => 'application/x-msexcel',
  'xlt'    => 'application/excel',
  'xlt'    => 'application/x-excel',
  'xlv'    => 'application/excel',
  'xlv'    => 'application/x-excel',
  'xlw'    => 'application/excel',
  'xlw'    => 'application/vnd.ms-excel',
  'xlw'    => 'application/x-excel',
  'xlw'    => 'application/x-msexcel',
  'xm'     => 'audio/xm',
  'xml'    => 'application/xml',
  'xml'    => 'text/xml',
  'xmz'    => 'xgl/movie',
  'xpix'   => 'application/x-vnd.ls-xpix',
  'xpm'    => 'image/x-xpixmap',
  'xpm'    => 'image/xpm',
  'x-png'  => 'image/png',
  'xsr'    => 'video/x-amt-showrun',
  'xwd'    => 'image/x-xwd',
  'xwd'    => 'image/x-xwindowdump',
  'xyz'    => 'chemical/x-pdb',
  'z'      => 'application/x-compress',
  'z'      => 'application/x-compressed',
  'zip'    => 'application/x-compressed',
  'zip'    => 'application/x-zip-compressed',
  'zip'    => 'application/zip',
  'zip'    => 'multipart/x-zip',
  'zoo'    => 'application/octet-stream',
  'zsh'    => 'text/x-script.zsh',
);
/** *Sigh* You wouldn't believe how long it took to format this list! **/
/** This will allow users to visit mime.types.php and view all MIME types **/
// *************************CREATE FOLDER**********************************
function createfolder($dir,$perm) {
if(mkdir($dir, $perm, true))
	{
	chmod($dir, $perm);
	return true;	
	}
else
	{
	return false;
	}
}

// *************************VALIDATE FILE EXTENSIONS**********************************
function validateExtension($extension, $types) {
if(in_array($extension,$types)) return false; else return true;
}

//*************************************Display Alert Notifications*********************************
function alert(&$notify){
$alert_num = count($notify['type']);
for($i=0;$i<$alert_num;$i++)
	{
	?><div class="alert<?php echo $notify['type'][$i]; ?>"><?php echo $notify['message'][$i]; ?></div><br /><?php
	}
}

// *************************SORT FILE ARRAY BY SELECTED ORDER**********************************
function sortfileorder(&$sortbynow,&$sortorder,&$file) {

switch($sortbynow) 
	{
	case 'name':
		array_multisort($file['sortname'], $sortorder, $file['name'], $sortorder, $file['type'], $sortorder, $file['modified'], $sortorder, $file['size'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
		break;
	case 'size':
		array_multisort($file['size'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['type'], $sortorder, $file['modified'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
		break;
	case 'type':
		array_multisort($file['type'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['size'], $sortorder, $file['modified'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
		break;
	case 'modified':
		array_multisort($file['modified'], $sortorder, $file['name'], $sortorder, $file['name'], $sortorder, $file['type'], $sortorder, $file['size'], $sortorder, $file['dimensions'], $sortorder, $file['width'], $sortorder, $file['height'], $sortorder);
		break;
	case 'dimensions':
		array_multisort($file['dimensions'], $sortorder, $file['width'], $sortorder, $file['sortname'], SORT_ASC, $file['name'], SORT_ASC, $file['modified'], $sortorder, $file['type'], $sortorder, $file['size'], $sortorder, $file['height'], $sortorder);
		break;
	default:
		// do nothing
	}
}

// **************************RESIZE IMAGE TO GIVEN SIZE*****************************************
function resizeimage($im,$maxwidth,$maxheight,$urlandname,$comp,$imagetype){
$width = imagesx($im);
$height = imagesy($im);
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight))
	{
	if($maxwidth && $width > $maxwidth)
		{
		$widthratio = $maxwidth/$width;
		$resizewidth=true;
		} 
	else $resizewidth=false;
		if($maxheight && $height > $maxheight)
		{
		$heightratio = $maxheight/$height;
		$resizeheight=true;
		} 
	else $resizeheight=false;
		if($resizewidth && $resizeheight)
		{
		if($widthratio < $heightratio) $ratio = $widthratio;
		else $ratio = $heightratio;
		}
	elseif($resizewidth)
		{
		$ratio = $widthratio;
		}
	elseif($resizeheight)
		{
		$ratio = $heightratio;
		}
	$newwidth = $width * $ratio;
	$newheight = $height * $ratio;
		if(function_exists('imagecopyresampled') && $imagetype !='image/gif')
		{
		$newim = imagecreatetruecolor($newwidth, $newheight);
		}
	else
		{
		$newim = imagecreate($newwidth, $newheight);
		}
   imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
   
   if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
   	{
   	imagejpeg ($newim,$urlandname,$comp);
   	}
   elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
   	{
   	imagepng ($newim,$urlandname,substr($comp,0,1));
   	}
   elseif($imagetype == 'image/gif')
   	{
   	imagegif ($newim,$urlandname);
   	}
	imagedestroy ($newim);
	}
else
	{
   if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
   	{
   	imagejpeg ($im,$urlandname,$comp);
   	}
   elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
   	{
   	imagepng ($im,$urlandname,substr($comp,0,1));
   	}
   elseif($imagetype == 'image/gif')
   	{
   	imagegif ($im,$urlandname);
   	}
	}
}

// **************************CHECK IMAGE TYPE AND CONVERT TO TEMP TYPE*****************************
function convert_image($imagetemp,$imagetype){
$cim1 = "";
if($imagetype == 'image/pjpeg' || $imagetype == 'image/jpeg')
	{
	$cim1 = imagecreatefromjpeg($imagetemp);
	}
elseif($imagetype == 'image/x-png' || $imagetype == 'image/png')
	{
	$cim1 = imagecreatefrompng($imagetemp);
	}
elseif($imagetype == 'image/gif')
	{
	$cim1 = imagecreatefromgif($imagetemp);
	}
return $cim1;
}

// **************************GENERATE FORM OPEN*****************************
function form_open($name,$class,$url,$parameters){
?><form name="<?php echo $name; ?>" class="<?php echo $class; ?>" method="post" action="<?php echo $url.$parameters; ?>">
<?php
}

// **************************GENERATE FORM SELECT ELEMENT*****************************
function form_select($options,$name,$label,$current,$auto){
if ($label) {?><label for="<?php echo $name; ?>"><?php echo $label; ?></label><?php } 
?><select name="<?php echo $name; ?>" <?php if ($auto) {?>onchange="this.form.submit();"<?php }?>>
<?php
$loopnum = count($options); 
for($i=0;$i<$loopnum;$i++)
	{
	$selected = ($options[$i][0] == $current ? ' selected' : ''); 
	echo '<option value="'.$options[$i][0].'"'.$selected.'>'.$options[$i][1].'</option>';
	}
?></select><?php
}

// **************************GENERATE FORM HIDDEN ELEMENT*****************************
function form_hidden_input($name,$value) {
?><input type="hidden" name="<?php echo $name; ?>" value="<?php echo $value; ?>" />
<?php
}

// **************************GENERATE FORM TEXT ELEMENT*****************************
function form_text_input($name,$label,$value,$size,$maxlength) {
if ($label) {?><label for="<?php echo $name; ?>"><?php echo $label; ?></label><?php } ?>
<input type="text" name="<?php echo $name; ?>" size="<?php echo $size; ?>" maxlength="<?php echo $maxlength; ?>" value="<?php echo $value; ?>" /><?php
}

// **************************GENERATE FORM SUBMIT BUTTON*****************************
function form_submit_button($name,$label,$class) {
?><button <?php if ($class) {?>class="<?php echo $class; ?>"<?php } ?>type="submit" name="<?php echo $name; ?>"><?php echo $label; ?></button>
</form>
<?php
}

//********************************Returns True if Number is Odd**************************************
function IsOdd($num)
{
return (1 - ($num & 1));
}

//********************************Truncate Text to Given Length If Required***************************
function truncate_text($textstring,$length){
	if (strlen($textstring) > $length)
		{
		$textstring = substr($textstring,0,$length).'...';
		}
	return $textstring;
}

/**
 * Present a size (in bytes) as a human-readable value
 * 
 * @param int    $size        size (in bytes)
 * @param int    $precision    number of digits after the decimal point
 * @return string
 */
function bytestostring($size, $precision = 0) {
    $sizes = array('YB', 'ZB', 'EB', 'PB', 'TB', 'GB', 'MB', 'KB', 'B');
    $total = count($sizes);

    while($total-- && $size > 1024) $size /= 1024;
    return round($size, $precision).' '.$sizes[$total];
}
//function to clean a filename string so it is a valid filename
function clean_filename($filename){
 return preg_replace("/[^a-zA-Z0-9-.!@#$%^&*()_+]/", "-", $filename);

}
//********************************Return File MIME Type***************************
function returnMIMEType($filename)
    {
		$ext = end(explode('.',$filename));
		if(isset($GLOBALS['mimetypes'][$ext])) {
			return $GLOBALS['mimetypes'][$ext];
		}
		else {
			return 'unknown/'.$ext;
		}
    }

//************************Return Array of Directory Structure***************************
function dirtree(&$alldirs,$root='',$tree='',$branch='',$level=0) {

if($level==0 && is_dir($root.$tree.$branch))
	{
   $filenum=count(glob($root.$tree.$branch.'*.*',GLOB_NOSORT));
	$topname = end(explode('/',rtrim($tree,'/')));
	$alldirs[] = array($branch,rtrim($topname,'/').' ('.$filenum.')',rtrim($topname,'/'),rtrim($topname,'/'),$filenum,filemtime($root.$tree.$branch));
	}
$level++;

$dh = opendir($root.$tree.$branch);
while (($dirname = readdir($dh)) !== false)
	{
	if($dirname != '.' && $dirname != '..' && is_dir($root.$tree.$branch.$dirname) && $dirname != '_thumbs')
		{
		$filenum=count(glob($root.$tree.$branch.$dirname.'/'.'*.*',GLOB_NOSORT));
		$indent = '';
		for($i=0;$i<$level;$i++) { $indent .= ' &nbsp; '; }
      if(strlen($indent)>0) $indent .= '&rarr; ';
		$alldirs[] = array(urlencode($branch.$dirname.'/'),$indent.$dirname.' ('.$filenum.')',$indent.$dirname,$dirname,$filenum,filemtime($root.$tree.$branch.$dirname));
		dirtree($alldirs,$root,$tree,$branch.$dirname.'/',$level);
		}
	}
closedir($dh);
$level--;
}
function isImg ($ext, $swf = false) {
	$images = array('GIF', 'JPEG', 'JPG', 'BMP', "PNG");
	if($swf == true) {
		$images[] = 'SWF';
	}
	if(in_array(strtoupper($ext), $images)) {
		return true;
	}
	else {
		return false;
	}
}
function fileSizeInfo($bytes) 
{ 
    $symbol = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');

    $exp = 0;
    $converted_value = 0;
    if( $bytes > 0 ) {
      $exp = floor( log($bytes)/log(1024) );
      $converted_value = ( $bytes/pow(1024,floor($exp)) );
    }

    return sprintf( '%.2f '.$symbol[$exp], $converted_value );
} 
function jsUriDecode($value) {
	$value = preg_replace('/%([0-9a-f]{2})/ie', 'chr(hexdec($1))', (string) $value);
	return $value;
}
?>